iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0

今天要來介紹最後一個集合類型的 Type,字典。
字典有什麼特別之處呢? 他沒有指定的順序,他裡面的值都會有自己相關聯的標示符,什麼是標示符呢?
你把它想像成他的ID就好,每一個值都有你自己定義的ID,方便你查找,就跟現實中的字典一樣。

設置字典的語法

Dictionary<Key, Value> ,其中的 Key 就是標示符,Value 就是對應的值。
也可以使用 [Key: Value] 來簡化。

創建字典

他也可以創造一個空的字典。

var namesOfIntegers: [Int: String] = [:]
    
var namesOfIntegers: [Int: String]()

然後依照上面創造的空字典,你可以用下面的方法加入東西跟把他變回空的字典。

namesOfIntegers[16] = "sixteen"

namesOfIntegers = [:]

訪問和修改字典

跟其他的集合類型一樣,有count 還有 isEmpty 可以做檢測。

然後可以用下標語法來新增值

var airports =["YYZ": "Toronto Pearson", "DUB": "Dublin"]
    
airports["LHR"] = "London"
// 這樣就會新增進去了
airpoets["LHR"] = "London Heathrow"
// 也可以用這個方法修改原有的值

接下來介紹 updateValue(_:forKey:)這個方法,他也可以新增跟更新值,如果你更新值的話他會返回你舊的值讓你可以方便確認是否有更新了。

if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
    print("The old value for DUB was \(oldValue)")
    }
// The old value for DUB was Dublin

也可以用下標語法來確認裡面的值。

if let airportName= airports["DUB"] {
    print("The name of the airport is \(airportName)")
    }else {
    print("That airport is not in the airports dictionary.")
}
// The name of the airport is Dublin Airport

您可以使用下標語法從字典中刪除鍵值對,方法是為該鍵分配值nil:

airports["APL"]= "Apple International"

airports["APL"]= nil

或者使用接下來要介紹的 removeValue(forKey:)這個方法

if let removedValue=airports.removeValue(forKey: "DUB") {
    print("The removed airport's name is \(removedValue).")
} else {
    print("The airports dictionary does not contain a value for DUB.")
}
// "The removed airport's name is Dublin Airport."

遍歷字典

跟其他的集合類型一樣也可以用 for-in 遍歷字典。

for (airportCode, airportName) in airports {
    print("\(airportCode): \(airportName)")
}
// LHR: London Heathrow
// YYZ: Toronto Pearson

也可以個別看是要 Key 還是 Value 。

for airportCode in airports.keys {
    print("Airport code: \(airportCode)")
}
// Airport code: LHR
// Airport code: YYZ

for airportName in airports.values {
    print("Airport name: \(airportName)")
}
// Airport name: London Heathrow
// Airport name: Toronto Pearson

如果你想要讓 Key 或是 Value 變成 Array的 Type 可以用下面的方法來創造新的 Array。

let airportCodes =[String](airports.keys)
// airportCodes is["LHR", "YYZ"]

let airportNames =[String](airports.values)
// airportNames is["London Heathrow", "Toronto Pearson"]

好啦,集合類型介紹完了,我們今天就到這。 美好的假日又要結束了QAQ


上一篇
30天的 iOS 修仙道路 (9)
下一篇
30天的 iOS 修仙道路 (11)
系列文
30天的 iOS 修仙道路 站穩腳步基礎篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言